package cn.dwy2002.task;

import cn.dwy2002.task.service.ITaskService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.dwy2002.common.Result;
import com.dwy2002.pojo.dto.task.TaskDTO;
import com.dwy2002.pojo.dto.task.TaskPageDTO;
import com.dwy2002.pojo.dto.task.UpdateProgressDTO;
import com.dwy2002.pojo.vo.task.TaskVO;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author 杜伟毅
 * @version 1.0
 * @since 2025/07/17
 */
@RestController
@RequestMapping("/task")
@RequiredArgsConstructor
public class TaskController {
    private final ITaskService service;

    /**
     * 分页查询任务
     *
     * @param dto 任务分页查询DTO
     * @return 分页结果
     * @author 杜伟毅
     * @since 2025/7/17 0014 15:35
     */
    @GetMapping("/page")
    public Result<IPage<TaskVO>> getTaskPage(@RequestBody TaskPageDTO dto) {
        return service.getTaskPage(dto);
    }

    /**
     * 创建任务
     *
     * @param dto 任务数据传输对象
     * @return 操作结果
     * @author 杜伟毅
     * @since 2025/7/17 0014 15:35
     */
    @PostMapping
    public Result<Void> createTask(@RequestBody TaskDTO dto) {
        return service.createTask(dto);
    }

    /**
     * 批量删除任务
     *
     * @param ids 任务ID列表
     * @return 操作结果
     * @author 杜伟毅
     * @since 2025/7/17 0014 15:35
     */
    @DeleteMapping
    public Result<Void> deleteTasks(@RequestBody List<String> ids) {
        return service.deleteTasks(ids);
    }

    /**
     * 更新任务信息
     *
     * @param dto 任务数据DTO
     * @return 操作结果
     * @author 杜伟毅
     * @since 2025/7/17 0014 15:35
     */
    @PutMapping
    public Result<Void> updateTask(@RequestBody TaskDTO dto) {
        return service.updateTask(dto);
    }

    /**
     * 获取任务详情
     *
     * @param id 任务ID
     * @return 任务详情视图对象
     * @author 杜伟毅
     * @since 2025/7/17 0014 15:35
     */
    @GetMapping("/{id}")
    public Result<TaskVO> getTaskDetail(@PathVariable String id) {
        return service.getTaskDetail(id);
    }

    /**
     * 更新任务进度
     *
     * @param dto 任务进度更新信息
     * @author 杜伟毅
     * @since 2025/7/17 0014 15:35
     */
    @PutMapping("/progress")
    public Result<Void> updateTaskProgress(@RequestBody UpdateProgressDTO dto) {
        return service.updateTaskProgress(dto);
    }

    /**
     * 返回员工的任务(员工自己查)
     *
     * @author 杜伟毅
     * @since 2025/7/21 0021 9:29
     */
    @GetMapping("/employee")
    public Result<List<TaskVO>> findTasksByEmployee() {
        return service.findTasksByEmployee();
    }

    /**
     * 返回员工的任务(店长查)
     *
     * @param id 用户id
     * @author 杜伟毅
     * @since 2025/7/21 0021 9:29
     */
    @GetMapping("/employee/{id}")
    public Result<List<TaskVO>> findTasksByEmployee(@PathVariable String id) {
        return service.findTasksByEmployee(id);
    }
}
